Harvard Hand was sent from Biorobotics Lab in Harvard University. It is a highly underactuated 1-DOF SDM hand with four fingers and two sensitive dynamic piezoelectric films on each finger. My responsibility on this hand is to design effective filters for a decent sensor signal, create a mount for the hand to put it on Staubli Arm as well as develop an reactive control algorithm for a stable grasping.
1. Signal Sampling and Processing
I used both hardware and software filter. The hardware filter is a circuits filter with an amplifier, capacitors and resistors. It is an active first-order low-pass RC filter, whose cutoff frequency is around 80 Hz. This filter helps reduce a lot of noise and greatly improve the signal to noise ratio. Besides the function of filtering, the circuits also help with impedance matching and potential holding.
![]() |
| Fig.1 First-order RC filter circuits |
For the software part, I tried both average filter and median filter and finally found average filter made a more stable signal. Finally, the signal to noise ratio is about 10:1, which is high enough to tell the behavior of the sensors. Below is the filtered signal of sensors from a random grasp.
![]() |
Fig.2 The signal of a grasping process of Harvard Hand |
2. Control algorithm
The control algorithm I am developing for Harvard Hand is reactive control. The idea of the control method basically came from Professor Howe's paper, which is reactive control algorithm. Reactive control allows the hand to behave very quickly according to the change of the environment. The hand will react differently according to the signals of sensors on each finger during grasping. The sensitivity of the dynamic piezoelectric films is extremely important.
![]() |
![]() |
| This situation is named Outer Contact by Professor Howe. In this situation, the object is off-center; For a good grasp, the hand should move left or right according to Senor 1 and Sensor 2. | |
![]() |
![]() |
| This is called Inner Contact in Professor Howe's paper. For this situation, the hand should move a little bit backward to make the object stay at the center of the palm. | |
Thus, the main idea of the algorithm should be in this way.
begin
while no limitation of moving forward do
{
Hand advances
}
If Sensor 1 is touched,
Hand moves left
else if Sensor 2 is touched,
Hand moves right
else if Sensor 3 or Sensor 4 is touched,
Hand moves backward
else
close the fingers
end
The hand and the arm are controlled by two computers, so communication between two computers is necessary. I chose ROS as the stage of control and communication for the arm and hand. I am now creating a service program and a client program to facilitate the control algorithm.
UPDATE: Hand With the Mount
The mount has been designed and made, the Hand looks better.
![]() |
![]() |
Based on the simple idea above, I improved the algorithm. Before starting the control program, I need first run the initialization code for the motor and a talker should be run for the sensors. Of course, one of the two computers should run the ROS master. The new algorithm is like blow
The picture below shows how the hand is going to grasp the object. The top picture is the situation of outer contact and the other one is inner contact.
In a word, the reactive control algorithm is based on the contact situations, which are outer contact and inner contact. The functions I have defined are, Close_Hand, Outercontact, Innercontact, Move_Arm(direction, displacement), talker and listener. Below is the basic idea of the program I am writing.
Begin
define ref_value = 0.1V
Move_Arm(forward, 10cm)
if sensor_1 or sensor_3 > ref_value
do Outercontact()
then do Innercontact()
else if sensor_2 or sensor_4 > ref_value
do Innercontact()
else motion_error or traveling_limited
end